#ifndef __TASK_HPP__
#define __TASK_HPP__

#include "log.hpp"
#include <string>
#include <unistd.h>
#include <unistd.h>
#include <cstring>


using namespace Logspace;

class Task
{
public:
    Task(const int & fd , const std::string message)
    :fd_(fd) , message_(message)
    {}

    bool operator()()
    {
        std::string ret = "I have got your message : " + message_;
        write(fd_ , ret.c_str() , ret.size());

        return true;
    }
private:
    int fd_;
    std::string message_;
};

// class Task
// {
// public:
//     Task(const int &fd)
//         : fd_(fd)
//     {
//     }

//     void operator()()
//     {
//         char buffer[1024];
//         while (1)
//         {
//             memset(buffer, 0, sizeof(buffer));
//             int n = read(fd_, buffer, sizeof(buffer) - 1);
//             if (n > 0)
//             {
//                 buffer[n] = 0;
//                 std::string ret = "I have got your message : " + std::string(buffer);
//                 write(fd_, ret.c_str(), ret.size());
//                 if (strcmp(buffer, "quit") == 0)
//                     break;
//             }
//             else if (n == 0)
//             {
//                 close(fd_);
//                 break;
//             }
//             else
//             {
//                 Log(Level::Error) << "read error";
//                 close(fd_);
//                 break;
//             }
//         }
//     }

// private:
//     int fd_;
// };

#endif
